package com.xian.arraylist;

import java.util.ArrayList;
import java.util.Scanner;

/**
 * 需求
 * 后台程序需要存储如上学生信息并展示，然后要提供按照学号搜索学生信息的功能。
 * <p>
 * 分析
 * 定义Student类，定义ArrayList集合存储如上学生对象信息，并遍历展示出来。
 * 提供一个方法，可以接收ArrayList集合，和要搜索的学号，返回搜索到的学生对象信息，并展示。
 * ③使用死循环，让用户可以不停的搜索。
 * <p>
 * <p>
 * 案例:学生信息系统:展示数据，并按照学号完成搜索学生类信息（学号，姓名，性别，班级>
 * 测试数据:
 * "20180302"”，"叶孤城"，23，""护理一班”
 * "20180303"，"东方不败"，23，"推拿二班”
 * "20180304”，"”西门吹雪”,26,"中药学四班”
 * "20180305""，""梅超风"”，26，"神经科2班”
 */
public class ArrayListTest6 {
    public static void main(String[] args) {

        //1、定义一个学生类，后期用于创建对象封装学生数据

        // 2、定义一个集合对象用于装学生对象
        ArrayList<Student> students = new ArrayList<>();

        // 3、创建对象封装数据，把对象加入到集合中去。
        students.add(new Student("20180302", "叶孤城", 23, "护理一班"));
        students.add(new Student("20180303", "东方不败", 23, "推拿二班"));
        students.add(new Student("20180304", "西门吹雪", 26, "中药学四班"));
        students.add(new Student("20180305", "梅超风", 26, "神经科2班"));

        System.out.println("学号\t\t名称\t\t年龄\t\t班级");
        // 4、遍历集合中的影片对象并展示出来
        for (int i = 0; i < students.size(); i++) {
            Student student = students.get(i);
            System.out.println(student.getStudyId() + "\t\t" + student.getName() + "\t\t" + student.getAge() + "\t\t" + student.getClassName());

        }

        //4.让用户不断的输入学号，可以搜索出该学生对象信息并展示出来（独立成方法)
        Scanner scanner = new Scanner(System.in);
        while (true) {
            System.out.println("请输入学号；");
            String id = scanner.next();
            Student student = getStudentByStudyId(students, id);
            if (student == null) {
                System.out.println("查无此人！！！");
            } else {
                System.out.println(student.getStudyId() + "\t\t" + student.getName() + "\t\t" + student.getAge() + "\t\t" + student.getClassName());
            }
        }
    }

    /**
     * 根据学号，去集合中找出学生对象并返回。
     *
     * @param students
     * @param studyId
     * @return
     */
    public static Student getStudentByStudyId(ArrayList<Student> students, String studyId) {
        for (int i = 0; i < students.size(); i++) {
            Student student = students.get(i);
            if (student.getStudyId().equals(studyId)) {
                return student;
            }
        }
        return null;  //查无此人
    }
}
